package cn.edu.nuaa.aadl2.generatorC.template
import static extension cn.edu.nuaa.aadl2.generatorC.template.BaAnnexTemplate.*

import org.osate.aadl2.impl.DefaultAnnexSubclauseImpl
import org.osate.ba.aadlba.impl.BehaviorAnnexImpl
import org.osate.aadl2.Element

/*
 * 
 * 
 * */
class AnnexTemplate {
	
		def static AnnexSwitch4head(DefaultAnnexSubclauseImpl subclause)'''
		«FOR Element annex :subclause.children»
				«switch annex{
					BehaviorAnnexImpl : '''
						«annex.baVariable»
						'''
					default:'''
						AnnexTemplate do not konw how 2 deal with «annex.class»
						ERROR!!! In  «subclause.containingClassifier.name»
					'''
				}»
		«ENDFOR»
		'''	
		
		/*
		 * 
		 * @para flag 是否为函数，若是子函数，switch循环的finish状态就直接返回；否则，finish状态的语义翻译为 重置至初始状态；
		 * 
		 */	
		def static AnnexSwitch(String container,DefaultAnnexSubclauseImpl subclause,String para,Boolean flag)'''
		«FOR Element annex :subclause.children»
				«switch annex{
					BehaviorAnnexImpl : '''
						 
						void «container»_BehaviorAnnex(«para»){
						«subclause.AnnexSwitch4head»	
						«annex.baMain(flag)»
						}					                
						'''
					default:'''
						AnnexTemplate do not konw how 2 deal with «annex.class»
					'''
				}»
		«ENDFOR»
		'''
		
		
		

}